layui.use(['table', 'jquery'], function () {
    var table = layui.table,
        $ = layui.jquery;

    //默认加载时执行
    findAll();

    function findAll() {

        let roleName = $('#roleName').val();
        let dataEnable = $('#dataEnable').val();
        let params = {
            roleName: roleName,
            dataEnable: dataEnable
        };
        //table样式
        table.render({
            elem: '#dataList'
            , url: URL + "/role/findAll"
            , where: params
            //如果无需传递额外参数，可不加该参数
            , method: 'get' //如果无需自定义HTTP类型，可不加该参数
            , request: {
                pageName: 'pageNum' //页码的参数名称，默认：page
                , limitName: 'pageSize' //每页数据量的参数名，默认：limit
            } //如果无需自定义请求参数，可不加该参数
            //response: {} //如果无需自定义数据响应名称，可不加该参数
            , cellMinWidth: 80 //全局定义常规单元格的最小宽度，layui 2.2.1 新增
            , height: 420
            , toolbar: '#toolbar' //开启头部工具栏，并为其绑定左侧模板
            , skin: 'line' //表格风格
            , even: true  //双数
            , page: true //是否显示分页
            , limits: [5, 10, 15, 30] //每页显示多少条
            , limit: 10 //每页默认显示的数量
            , title: '角色数据表'
            , cols: [[
                {type: 'checkbox', fixed: 'left'}
                , {field: 'id', width: 160, title: 'ID', sort: true, fixed: 'left'}
                , {field: 'roleName', width: '25%', title: '角色名', sort: true}
                , {field: 'dataEnable', width: '25%', title: '状态',templet:function (e) {
                       return showDataEnable(e);
                    }}
                , {field: 'sequence', width: '25%', title: '排序号',sort:true}
                , {fixed: 'right', width: 165, align: 'center', toolbar: '#operating'}
            ]]

        });
    }

    //监听头工具栏事件
    table.on('toolbar(dataList)', function (obj) {
        var checkStatus = table.checkStatus(obj.config.id)
            , data = checkStatus.data; //获取选中的数据
        switch (obj.event) {
            case 'add':
                addRole();
                break;
            case 'enable':
                if (data.length === 0) {
                    layer.msg('请选择一行');
                } else if (data.length > 1) {
                    layer.msg('只能同时编辑一个');
                } else {
                    dataEnable('yes', checkStatus.data[0].id);
                }
                break;
            case 'disabled':
                if (data.length === 0) {
                    layer.msg('请选择一行');
                } else if (data.length > 1) {
                    layer.msg('只能同时编辑一个');
                } else {
                    dataEnable('no', checkStatus.data[0].id);
                }
                break;
            case 'batchDel':
                if (data.length === 0) {
                    layer.msg('请至少选择一行');
                } else {
                    let ids = [];
                    for (let i = 0; i < data.length; i++) {
                        //获取每一行选中的Id
                        ids += checkStatus.data[i].id + ',';
                    }
                    //去掉最后一个逗号
                    ids = ids.substring(0, ids.lastIndexOf(','));
                    layer.confirm('真的删除行么', function (index) {
                        layer.close(index);
                        batchDelRole(ids.toString());
                    });

                }
                break;
        }
    });

    //监听行工具事件
    table.on('tool(dataList)', function (obj) { //注：tool 是工具条事件名，test 是 table 原始容器的属性 lay-filter="对应的值"
        var data = obj.data //获得当前行数据
            , layEvent = obj.event; //获得 lay-event 对应的值
        if (layEvent === 'del') {
            layer.confirm('真的删除行么', function (index) {
                layer.close(index);
                deleteRole(data.id);
            });
        } else if (layEvent === 'edit') {
            updateRole(data.id);
        }
    });


    /**
     * 添加
     */
    function addRole() {
        commonLayerOpen('新增角色','roleAdd.html');
    }

    /**
     * 删除
     * @param id
     */
    function deleteRole(id) {

        let result = commonAjax('/role/delete',{id:id},'get');
        if (result.count === 1) {
            layerMsgDeleteSuccess();
            //刷新
            findAll();
        } else {
            layerMsgDeleteFail();
        }
    }

    /**
     * 批量删除
     */
    function batchDelRole(ids) {
        let result = commonBatchDelAjax('/role/deletes', {ids: ids}, 'post');
        if (result.count > 0) {
            layerMsgDeleteSuccess();
            //刷新
            findAll();
        } else {
            layerMsgDeleteFail();
        }

    }

    /**
     * 修改
     * @param id
     */
    function updateRole(id) {
        sessionStorage.setItem("roleId", id);
        commonLayerOpen('角色详情','roleDetails.html');
    }

    /**
     * 查询
     */
    $('#query').on('click', function () {
        findAll();
    });

    /**
     * 启用与禁用
     * @param type
     * @param id
     */
    function dataEnable(type, id) {
        let data = {
            id: id,
            dataEnable: type
        };

        let result = commonAjax('/role/update', JSON.stringify(data), 'post');
        if (result.count === 1) {
            layerMsgOperatingSuccess();
        } else {
            layerMsgOperatingFail();
        }
        findAll();
    }
});